package Chapter2;

//47页程序 2.3   表示范围大小由小到大排列：byte——short——char——int——long——float——double
public class DataType {
    public static void main(String[] args) {
        int intValue = 1234567111;
        long longValue = 1234567890123456111L;
        float floatValue = intValue;   //int型的1234567111转float型超出有效位会损失精度
        double doubleValue = intValue;  //int型的1234567111转double未超出有效位不会损失精度
        System.out.println("整型变量 = " + intValue);
        System.out.println("单精度浮点型变量 = " + floatValue);
        System.out.println("双精度浮点型变量 = " + doubleValue);
        floatValue = longValue;
        doubleValue = longValue;
        System.out.println("长整型变量 = " + longValue);
        System.out.println("单精度浮点型变量 = " + floatValue);  //long型的1234567890123456111L转float型超出有效位会损失精度
        System.out.println("双精度浮点型变量 = " + doubleValue);  //long型的1234567890123456111L转double型超出有效位会损失精度

        //以下为强制转换
        int i = 30000;
        byte b = (byte) i;
        System.out.println("b = " + b);   //大范围的数据类型强制转换为小范围的数据类型会截断高位内容，导致精度下降或数据溢出

        byte z = 3;
        int n = (int) z;
        System.out.println("n = " + n);   //小范围的数据类型强制转换为大范围的数据类型不会损失精度

    }
}
